#coding=utf-8
#此程序是包含朵云社区基本流程的接口自动化脚本，每日执行一次
import requests
from TestWeb.purchaseApply import submit
from TestWeb.register import register,name,register_v2
from TestWeb.platform_login_api import login
from TestWeb.gdg_personaldata import update
from TestWeb.sign import sign
from TestWeb.downloadNews import News
from TestWeb.reply import comment,reply
from TestWeb.community_purchase_apply import code
from TestWeb.mysql_password import community_num
import random

s = requests.session()
#合伙人全部流程
def partner(mobile,password,productId):
    username = str(name())
    email = str(str(random.randint(10000,100000)) + '@163.com')  #定义email地址
    street = str('天府广场仁和春天1号楼'+str(random.randint(1,100))+'号')
    try:
        Apply_code = submit(mobile,username,'PASSED',productId)[1]   #获得合伙人付款码
        if Apply_code == 'fail':  #已购买合伙人流程
            headers = login(mobile)  # 获取到登录过后的headers
            if headers == '请在下一步页面进行注册':
                Apply_code = code(mobile)
                register_v2(mobile, password)  # 合伙人进行注册并检查银币数量
                if check_coin(mobile)[0] == '注册成功' and check_coin(mobile)[1] == 10:
                    print str(check_coin(mobile)[0]) + u'获得银币数量为：' + str(check_coin(mobile)[1])
                else:
                    print u'获取银币明细失败，请检查接口和银币明细'
                update(mobile, username, email, street)  # 更新资料并检查银币数量
                if check_coin(mobile)[0] == '完善基本资料' and check_coin(mobile)[1] == 20:
                    print str(check_coin(mobile)[0]) + u'获得银币数量为：' + str(check_coin(mobile)[1])
                else:
                    print u'获取银币明细失败，请检查接口和银币明细'
                check_silvercoin_amount(mobile)  # 进行签到、发表文章、发表评论、评论回复、点赞等，并进行银币检查
                game_result = game(mobile)   #进行游戏后检查奖励结果
                changename(mobile,username)  #修改朵云社区名称
                return u'已购买合伙人、未注册流程执行完毕！游戏结果为：' + str(game_result)
            if headers == '该用户账号密码输入错误':
                return '该用户账号密码输入错误'
            else:  #已注册，已购买合伙人流程
                Apply_code = code(mobile)
                msg = activate(mobile)  # 完善基本资料并且切换合伙人身份并修改朵云名称
                if msg == '用户角色切换成功':
                    print u'账号：' + str(mobile) + u'已成功升级成合伙人，等级为' + str(productId) + u'级'
                else:
                    print u'账号：' + str(mobile) + u'升级成合伙人失败' + str(msg)
                check_silvercoin_amount(mobile)  # 进行签到、发表文章、发表评论、评论回复、点赞等，并进行银币检查
                game_result = game(mobile)  # 进行游戏后检查奖励结果
                return u'用户升级成合伙人成功，付款码为：' + str(Apply_code) + u'，游戏结果为：' + str(game_result)
        else:   #未购买合伙人流程
            headers = login(mobile)  # 获取到登录过后的headers
            if headers == '请在下一步页面进行注册':  #未注册、未购买合伙人注册流程
                register_v2(mobile, password)            #合伙人进行注册并检查银币数量
                if check_coin(mobile)[0] == '注册成功' and check_coin(mobile)[1] == 10:
                    print str(check_coin(mobile)[0]) + u'获得银币数量为：' + str(check_coin(mobile)[1])
                else:
                    print u'获取银币明细失败，请检查接口和银币明细'
                update(mobile,username,email,street)  #更新资料并检查银币数量
                if check_coin(mobile)[0] == '完善基本资料' and check_coin(mobile)[1] == 20:
                    print str(check_coin(mobile)[0]) + u'获得银币数量为：' + str(check_coin(mobile)[1])
                else:
                    print u'获取银币明细失败，请检查接口和银币明细'
                check_silvercoin_amount(mobile)   #进行签到、发表文章、发表评论、评论回复、点赞等，并进行银币检查
                game_result = game(mobile)  # 进行游戏后检查奖励结果
                changename(mobile, username)  # 修改朵云社区名称
                return u'未购买合伙人、未注册流程执行完毕！'+ u'游戏结果为：' + str(game_result)
            if headers == '该用户账号密码输入错误':
                return '该用户账号密码输入错误'
            else:  #已注册，未购买合伙人激活流程
                msg = activate(mobile)   #完善基本资料并且切换合伙人身份并修改朵云名称
                if msg == '用户角色切换成功':
                    print u'账号：' + str(mobile) + u'已成功升级成合伙人，等级为' + str(productId) + u'级'
                else:
                    print u'账号：' + str(mobile) + u'升级成合伙人失败' + str(msg)
                check_silvercoin_amount(mobile)  # 进行签到、发表文章、发表评论、评论回复、点赞等，并进行银币检查
                game_result = game(mobile)  # 进行游戏后检查奖励结果
                return '未购买合伙人、已注册流程执行完毕！'+ '游戏结果为：' + str(game_result)
    except:
        return '接口有误！请查看后台日志！'

#成员身份全部流程
def member(mobile,password):
    authCode = '38ZG4FSR'  #为手机号码：17781108472的邀请码
    username = str(name())
    email = str(str(random.randint(10000, 100000)) + '@163.com')  # 定义email地址
    street = str('天府广场仁和春天1号楼' + str(random.randint(1, 100)) + '号')
    try:
        headers = login(mobile)  # 获取到登录过后的headers，并且验证是否注册
        if headers == '该用户账号不存在':
            register_v2(mobile, password)  # 成员进行注册并检查银币数量
            if check_coin(mobile)[0] == '注册成功' and check_coin(mobile)[1] == 10:
                print str(check_coin(mobile)[0]) + u'获得银币数量为：' + str(check_coin(mobile)[1])
            else:
                print u'获取银币明细失败，请检查接口和银币明细'
            update(mobile, username, email, street)  # 更新资料并检查银币数量
            if check_coin(mobile)[0] == '完善基本资料' and check_coin(mobile)[1] == 20:
                print str(check_coin(mobile)[0]) + u'获得银币数量为：' + str(check_coin(mobile)[1])
            else:
                print u'获取银币明细失败，请检查接口和银币明细'
            check_silvercoin_amount(mobile)  # 进行签到、发表文章、发表评论、评论回复、点赞等，并进行银币检查
            game_result = game(mobile)  # 进行游戏后检查奖励结果
            print u'该用户账号不存在，现已创建成功，身份为成员，号码为：' + str(mobile)+ u'游戏结果为：' + str(game_result)
            return '该用户账号不存在，现已创建成功，身份为成员，号码为：' + str(mobile)+ '游戏结果为：' + str(game_result)
        if headers == '该用户账号密码输入错误':
            return '该用户账号密码输入错误'
        else:  # 已注册流程
            update(mobile, username, email, street)  # 更新资料并检查银币数量
            check_silvercoin_amount(mobile)  # 进行签到、发表文章、发表评论、评论回复、点赞等，并进行银币检查
            game_result = game(mobile)  # 进行游戏后检查奖励结果
            return '该账号已注册！并已执行全部银币流程！'+ '游戏结果为：' + str(game_result)
    except:
        return '接口有误！请查看后台日志！'

#查询银币情况
def check_coin(mobile):
    headers = login(mobile)[0]  # 获取到登录过后的headers
    silvercoin_amount = s.get('http://community-platform-api-test.gdgyun.com/api/community/reward/silver/coinsDetail?isIncoming=&pageIndex=1&pageSize=15',headers=headers)  # 我的银币
    # print silvercoin_amount.text
    desc = silvercoin_amount.json()["data"]["list"][0]["desc"]
    coins = silvercoin_amount.json()["data"]["list"][0]["coins"]
    # print desc,coins
    return desc,coins  #返回银币的描述和数量

#文章点赞
def like_article(mobile,articleId):
    headers = login(mobile)[0]  # 获取到登录过后的headers
    like = s.put('http://community-article-api-test.gdgyun.com/api/community/article/like/article/'+str(articleId),headers=headers)   #对文章进行点赞
    msg = like.json()["msg"]
    return msg

#切换合伙人身份并修改朵云名称
def activate(mobile):
    username = str(name())
    email = str(str(random.randint(10000, 100000)) + '@163.com')  # 定义email地址
    street = str('天府广场仁和春天1号楼' + str(random.randint(1, 100)) + '号')
    update(mobile, username, email, street)
    headers = login(mobile)[0]  # 获取到登录过后的headers
    becomePartner = s.put('http://community-platform-api-test.gdgyun.com/api/community/loginBy/partner',headers=headers)
    msg = becomePartner.json()["msg"]
    changename(mobile, username)  # 修改朵云社区名称
    return msg   #返回信息

#获取银币流程
def check_silvercoin_amount(mobile):
    sign(mobile)  # 进行每日签到，并检查银币数量
    if check_coin(mobile)[0] == '每日签到':
        print str(check_coin(mobile)[0]) + u'获得银币数量为：' + str(check_coin(mobile)[1])
    else:
        print u'获取银币明细失败，请检查接口和银币明细'
    article_list = ['8', '9', '10', '11', '12']
    article_num = article_list[random.randint(0, 4)]
    articleId = News(mobile, article_num,1)[1]  # 随机栏目下发表文章，并检查银币数量
    if check_coin(mobile)[0] == '发布原创文章':
        print str(check_coin(mobile)[0]) + u'获得银币数量为：' + str(check_coin(mobile)[1]) + u'，文章ID为：' + str(articleId)
    else:
        print u'获取银币明细失败，请检查接口和银币明细'
    commentId = comment(mobile, '测试评论一次', '1', articleId)[1]  # 对刚才发表的文章进行评论一次，并检查银币数量
    if check_coin(mobile)[0] == '发表评论' and check_coin(mobile)[1] == 3:
        print str(check_coin(mobile)[0]) + u'获得银币数量为：' + str(check_coin(mobile)[1])
    else:
        print u'获取银币明细失败，请检查接口和银币明细'
    reply(mobile, '测试回复评论一次', '1', commentId)  # 对刚才发表的评论进行回复一次
    print u'发表文章评论回复成功'
    msg = like_article(mobile, articleId)  # 对刚才发表的文章进行点赞，并检查银币数量
    if msg == '点赞成功' and check_coin(mobile)[1] == 2:
        print str(msg) + u'获得银币数量为：' + str(check_coin(mobile)[1])
    else:
        print u'获取银币明细失败，请检查接口和银币明细'

#执行游戏接口并验证结果
def game(mobile):
    headers = login(mobile)[0]
    #开始抽奖
    start = s.get('http://community-platform-api-test.gdgyun.com/api/community/activity/1/lottery/start',headers=headers)
    name = start.json()["data"]["name"]  # 获得奖励的名称
    type = start.json()["data"]["type"]  # 获得奖励的类型
    #检查银币消耗情况
    desc = check_coin(mobile)[0]
    coins = check_coin(mobile)[1]
    if desc == '参加抽奖活动' and coins == -10:
        if name == '谢谢参与':
            return name
        if type == '商品':
            myPrize = s.get('http://community-platform-api-test.gdgyun.com/api/community/activity/winning/prizes?pageIndex=1&pageSize=7',headers=headers)
            prizename = myPrize.json()["data"]["list"][0]["prizeName"]
            return prizename
    if desc == '抽奖得银币' and coins == 20:
        return name
    if desc == '抽奖得银币' and coins == 100:
        return name
    else:
        return u'银币消耗有误！请检查接口！'

#修改朵云名称
def changename(mobile,name):
    headers = login(mobile)[0]
    community_no = community_num(mobile)
    changename = s.put('http://community-platform-api-test.gdgyun.com/api/community/'+ community_no +'/changeName/'+name+'的朵云',headers=headers)
    msg = changename.json()["msg"]
    print msg
if __name__ =='__main__':
    #partner('13800010066','cq123321','1')
    #check_coin('13800010054')
    #like_article('13800010054','625')
    #member('13800010060','cq123321')
    #game('13800010070')
    changename('13800010082','晨曦孕')